#ifndef QUEUE_H
#define QUEUE_H

#include "arraylist.h"
// for supporting of template classes
typedef int T;

class Queue
{
public:
    Queue();
    Queue(int initialCapacity);
    Queue(ArrayList *list);
    void enqueue(T object);
    T dequeue();
    void deleteAll();
    int size();
    bool isEmpty();
    void startPos();
    T getNext();
    bool isAtEnd();

    bool doesContain(T element);

    ~Queue();
    T get(int index);

protected:
    void Init();

protected:
    ArrayList* _list;
    int _nInitialCapacity;
};

#endif // QUEUE_H
